package com.ruoyi.system.service.impl;

import java.util.List;

import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.DsClassStuMapper;
import com.ruoyi.system.domain.DsClassStu;
import com.ruoyi.system.service.IDsClassStuService;

/**
 * 课程学生中间Service业务层处理
 *
 * @author tyro
 * @date 2025-03-23
 */
@Service
public class DsClassStuServiceImpl implements IDsClassStuService
{
    @Autowired
    private DsClassStuMapper dsClassStuMapper;

    /**
     * 查询课程学生中间
     *
     * @param classId 课程学生中间主键
     * @return 课程学生中间
     */
    @Override
    public DsClassStu selectDsClassStuByClassId(Long classId)
    {
        return dsClassStuMapper.selectDsClassStuByClassId(classId);
    }

    /**
     * 查询课程学生中间列表
     *
     * @param dsClassStu 课程学生中间
     * @return 课程学生中间
     */
    @Override
    public List<DsClassStu> selectDsClassStuList(DsClassStu dsClassStu)
    {
        // 获取当前登录用户ID
        Long userId = SecurityUtils.getUserId();

        // 如果不是管理员，则添加学院过滤条件
        if(!SecurityUtils.isAdmin(userId)){ // 或使用 SecurityUtils.isAdmin(loginUser.getUser().getUserId())
            dsClassStu.setCollegeId(SecurityUtils.getLoginUser().getCollegeId());
        }
        return dsClassStuMapper.selectDsClassStuList(dsClassStu);
    }

    /**
     * 新增课程学生中间
     *
     * @param dsClassStu 课程学生中间
     * @return 结果
     */
    @Override
    public int insertDsClassStu(DsClassStu dsClassStu)
    {
        // 设置学院ID
        if (dsClassStu.getCollegeId() == null) {
            dsClassStu.setCollegeId(SecurityUtils.getLoginUser().getCollegeId());
        }
        return dsClassStuMapper.insertDsClassStu(dsClassStu);
    }

    /**
     * 修改课程学生中间
     *
     * @param dsClassStu 课程学生中间
     * @return 结果
     */
    @Override
    public int updateDsClassStu(DsClassStu dsClassStu)
    {
        return dsClassStuMapper.updateDsClassStu(dsClassStu);
    }

    /**
     * 批量删除课程学生中间
     *
     * @param classIds 需要删除的课程学生中间主键
     * @return 结果
     */
    @Override
    public int deleteDsClassStuByClassIds(Long[] classIds)
    {
        return dsClassStuMapper.deleteDsClassStuByClassIds(classIds);
    }

    /**
     * 删除课程学生中间信息
     *
     * @param classId 课程学生中间主键
     * @return 结果
     */
    @Override
    public int deleteDsClassStuByClassId(Long classId)
    {
        return dsClassStuMapper.deleteDsClassStuByClassId(classId);
    }

    /**
     * 根据学生id查询课程
     * @param studentId
     * @return 结果
     */
    @Override
    public DsClassStu selectDsClassStuByStudentId(String studentId) {
        return dsClassStuMapper.selectDsClassStuByStudentId(studentId);
    }
}
